5. 理解 ResNet
什么是 ResNet(Residual Network)?
ResNet(残差网络)是何恺明(Kaiming He)等人在 2015 年提出的一种深度神经网络结构,论文标题为《Deep Residual Learning for Image Recognition》。它最大的贡献是提出了 Residual Connection(残差连接) 或 Skip Connection(跳跃连接),解决了深层神经网络难以训练的问题。该工作获得了 ILSVRC 2015 图像分类冠军,并成为现代深度学习最重要的基础架构之一。
原论文:Deep Residual Learning for Image Recognition (CVPR 2016)
ResNet 出现之前的问题
2012 年 AlexNet 成功后,研究者发现:
网络越深,效果似乎越好。
于是出现了:
- AlexNet:8层
- VGG16:16层
- VGG19:19层
大家开始疯狂加深网络。
理论上:
20层网络
↓
50层网络
↓
100层网络
↓
200层网络
应该越来越强。
然而实验发现:
20层
训练误差:低
56层
训练误差:反而更高
注意:
这不是过拟合。
因为:
训练集都学不好
说明优化过程出了问题。论文称这种现象为:
Degradation Problem(退化问题)。(cv-foundation.org)
一个非常关键的思考
假设已经有一个训练得很好的网络:
输入
↓
若干层
↓
输出
现在我们额外加两层:
输入
↓
若干层
↓
新加两层
↓
输出
按理说:
新增两层什么都不干(学习恒等映射):
y = x
性能至少不应该变差。
因为:
新网络 = 旧网络 + 两层无作用层
理论上:
更深网络 ≥ 浅网络
但实际上训练时做不到。
问题就在于:
神经网络很难自动学出
y = x
这个恒等映射。
ResNet 的核心思想
既然直接学:
很困难。
那就换个目标:
学习:
于是:
这就叫:
Residual Learning(残差学习)。
通俗理解
假设你是老师。
要求学生把答案写出来:
1000
学生可能很难直接写。
但如果告诉学生:
基础答案 = 998
你只需要补多少?
学生立刻知道:
+2
这就是残差。
ResNet的思想:
不要直接学最终答案
而是学:
距离答案还差多少
残差块(Residual Block)
普通CNN:
flowchart LR
A[x] --> B[Conv]
B --> C[ReLU]
C --> D[Conv]
D --> E[输出]
ResNet:

数学表达:
其中:
是卷积层学到的内容。
而
直接绕过中间网络。
这条路就叫:
Shortcut
Skip Connection
Identity Connection
都是一个东西。(vitalab.github.io)
为什么这么做有效?
假设某一层根本没用。
理想情况:
于是:
网络自动退化成恒等映射。
这意味着:
增加网络深度
不会破坏已有能力
因此:
浅层网络会的
深层网络一定能做到
优化难度大大降低。
从梯度角度理解
传统网络:
Loss
↓
Layer100
↓
Layer99
↓
...
↓
Layer1
反向传播时:
需要经过上百层连乘。
容易出现:
梯度消失
梯度爆炸
ResNet:
因为有:
x 输出
└────────────►
捷径存在。
梯度可以直接传播:
Loss
↓
Layer100
↓
Layer99
↓
...
↓
Shortcut
↓
Layer1
因此:
梯度流动更顺畅
训练超深网络成为可能。
ResNet 的网络结构
论文提出多个版本:
| 模型 | 层数 |
|---|---|
| ResNet18 | 18 |
| ResNet34 | 34 |
| ResNet50 | 50 |
| ResNet101 | 101 |
| ResNet152 | 152 |
其中最经典的是:
ResNet50
今天依然广泛使用。(vitalab.github.io)
ResNet50 的 Bottleneck 结构
浅层网络使用:
3×3
3×3
卷积。
深层网络为了节省计算:
1×1
↓
3×3
↓
1×1
结构:
输入
↓
1×1 降维
↓
3×3 特征提取
↓
1×1 升维
↓
Shortcut相加
↓
输出
称为:
Bottleneck Block(瓶颈块)。(vitalab.github.io)
为什么 ResNet 如此重要?
在今天的大模型时代,很多结构都能找到 ResNet 的影子:
Transformer
x
↓
Attention
↓
+x
即:
x
↓
MLP
↓
+x
即:
这本质上就是:
Residual Connection
Llama:
x = x + Attention(x)
x = x + MLP(x)
GPT:
x = x + Attention(x)
x = x + FFN(x)
全部继承了 ResNet 的思想。
可以说:
Transformer 的残差连接直接来源于 ResNet。残差连接已经成为现代深度学习的标准配置。
用一句话理解 ResNet
如果只记住一句话:
ResNet 的核心思想就是:不要直接学习目标函数
,而是学习“还差多少”的残差 ,再通过 Shortcut 将输入直接加回来,从而让超深网络能够稳定训练。
公式:
这也是后来 Transformer、BERT、GPT、Llama 等几乎所有现代大模型都保留残差连接的根本原因。